package com.bolt.admin.module.dict.dto.converter;

import com.bolt.admin.module.dict.dto.DictDTO;
import com.bolt.admin.module.dict.entity.DictEntity;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * Created by Administrator on 2018/11/27.
 */
public class DictConverter {
    private DictConverter() {
// do nothing
    }

    /**
     * Entity对象转换为DTO对象
     *
     * @param dict DO对象
     * @return DTO对象
     */
    public static DictDTO toDTO(DictEntity dict) {
        if (Objects.isNull(dict)) {
            return null;
        }
        DictDTO result = new DictDTO();
        result.setId(dict.getId());
        result.setName(dict.getName());
        result.setDescription(dict.getDescription());
        result.setVersionNO(dict.getVersionNO());
        // TODO
        return result;
    }

    /**
     * DTO对象转换为Entity对象
     *
     * @param dict DO对象
     * @return VO对象
     */
    public static DictEntity toEntity(DictDTO dict) {
        if (Objects.isNull(dict)) {
            return null;
        }
        DictEntity result = new DictEntity();
        result.setId(dict.getId());
        result.setName(dict.getName());
        result.setDescription(dict.getDescription());
        result.setVersionNO(dict.getVersionNO());
        // TODO
        return result;
    }

    /**
     * DTO对象转换为DO对象
     *
     * @param dict DO对象
     * @return VO对象
     */
    public static DictEntity toEntity(DictEntity result, DictDTO dict) {
        if (Objects.isNull(dict)) {
            return null;
        }
        result.setId(dict.getId());
        result.setName(dict.getName());
        result.setDescription(dict.getDescription());
        return result;
    }

    /**
     * 批量 Entity对象转换为DTO对象
     *
     * @param dictList Entity集合对象
     * @return DTO对象
     */
    public static List <DictDTO> toDTO(List <DictEntity> dictList) {
        if (Objects.isNull(dictList)) {
            return null;
        }
        return dictList.stream().map(DictConverter::toDTO).collect(Collectors.toList());
    }

}
